﻿using System;
using Runtime.Services.Battle;
using Runtime.Services.BattleSkill;

namespace Runtime.Models {

    public partial interface IDFR_BattleEffectModelBase {

        IDFR_BattleBuffProvider AsBuffProvider();
    }

    public abstract partial class DFR_BattleEffectModelBase : IDFR_BattleBuffProvider {

        public IDFR_BattleBuffProvider AsBuffProvider() => this;

        IDFR_BattleBuffProviderSetter IDFR_BattleBuffProvider.AsSetter() => throw new NotSupportedException();

        bool IDFR_BattleBuffProvider.IsEnablePersistence => false;

        protected IDFR_BattleData m_HPBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPBase => m_HPBase;

        protected IDFR_BattleData m_HPFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPFactor => m_HPFactor;

        protected IDFR_BattleData m_HPAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPAdditional => m_HPAdditional;

        protected IDFR_BattleData m_HPMaxBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPMaxBase => m_HPMaxBase;

        protected IDFR_BattleData m_HPMaxFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPMaxFactor => m_HPFactor;

        protected IDFR_BattleData m_HPMaxAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.HPMaxAdditional => m_HPMaxAdditional;

        protected IDFR_BattleData m_DamageHPMaxBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPMaxBase => m_DamageHPMaxBase;

        protected IDFR_BattleData m_DamageHPMaxFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPMaxFactor => m_DamageHPMaxFactor;

        protected IDFR_BattleData m_DamageHPMaxAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPMaxAdditional => m_DamageHPMaxAdditional;

        protected IDFR_BattleData m_DamageHPBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPBase => m_DamageHPBase;

        protected IDFR_BattleData m_DamageHPFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPFactor => m_DamageHPFactor;

        protected IDFR_BattleData m_DamageHPAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageHPAdditional => m_DamageHPAdditional;

        protected IDFR_BattleData m_DamageBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageBase => m_DamageBase;

        protected IDFR_BattleData m_DamageFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageFactor => m_DamageFactor;

        protected IDFR_BattleData m_DamageAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DamageAdditional => m_DamageAdditional;

        protected IDFR_BattleData m_AttackBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackBase => m_AttackBase;

        protected IDFR_BattleData m_AttackFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackFactor => m_AttackFactor;

        protected IDFR_BattleData m_AttackAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackAdditional => m_AttackAdditional;

        protected IDFR_BattleData m_AttackBossAdditionalBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackBossAdditionalBase => m_AttackBossAdditionalBase;

        protected IDFR_BattleData m_AttackBossAdditionalFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackBossAdditionalFactor => m_AttackBossAdditionalFactor;

        protected IDFR_BattleData m_AttackBossAdditionalAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackBossAdditionalAdditional => m_AttackBossAdditionalAdditional;

        protected IDFR_BattleData m_AttackSpeedBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackSpeedBase => m_AttackSpeedBase;

        protected IDFR_BattleData m_AttackSpeedFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackSpeedFactor => m_AttackSpeedFactor;

        protected IDFR_BattleData m_AttackSpeedAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.AttackSpeedAdditional => m_AttackSpeedAdditional;

        protected IDFR_BattleData m_CriticalBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalBase => m_CriticalBase;

        protected IDFR_BattleData m_CriticalFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalFactor => m_CriticalFactor;

        protected IDFR_BattleData m_CriticalAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalAdditional => m_CriticalAdditional;

        protected IDFR_BattleData m_CriticalPowerBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalPowerBase => m_CriticalPowerBase;

        protected IDFR_BattleData m_CriticalPowerFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalPowerFactor => m_CriticalPowerFactor;

        protected IDFR_BattleData m_CriticalPowerAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.CriticalPowerAdditional => m_CriticalPowerAdditional;

        protected IDFR_BattleData m_SpottingRangeBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.SpottingRangeBase => m_SpottingRangeBase;

        protected IDFR_BattleData m_SpottingRangeFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.SpottingRangeFactor => m_SpottingRangeFactor;

        protected IDFR_BattleData m_SpottingRangeAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.SpottingRangeAdditional => m_SpottingRangeAdditional;

        protected IDFR_BattleData m_MoveSpeedBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.MoveSpeedBase => m_MoveSpeedBase;

        protected IDFR_BattleData m_MoveSpeedFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.MoveSpeedFactor => m_MoveSpeedFactor;

        protected IDFR_BattleData m_MoveSpeedAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.MoveSpeedAdditional => m_MoveSpeedAdditional;

        protected IDFR_BattleData m_DefenseBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DefenseBase => m_DefenseBase;

        protected IDFR_BattleData m_DefenseFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DefenseFactor => m_DefenseFactor;

        protected IDFR_BattleData m_DefenseAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DefenseAdditional => m_DefenseAdditional;

        protected IDFR_BattleData m_DodgeBase;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DodgeBase => m_DodgeBase;

        protected IDFR_BattleData m_DodgeFactor;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DodgeFactor => m_DodgeFactor;

        protected IDFR_BattleData m_DodgeAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.DodgeAdditional => m_DodgeAdditional;

        protected IDFR_BattleData m_InfluenceAmountAdditional;
        IDFR_ReadOnlyBattleData IDFR_BattleBuffProvider.InfluenceAmountAdditional => m_InfluenceAmountAdditional;
    }
}